functional programming
(FP) A program in a functional language consists of a set of (possibly {recursive}) {function} definitions and
an expression whose value is output as the program's result.
Functional languages are one kind of {declarative language}.
They are based on the {typed lambda-calculus} with constants.
There are no {side-effect}s to expression evaluation so an
expression (e.g. a function applied to certain arguments) will
always evaluate to the same value (if its evaluation
terminates). Furthermore, an expression can always be
replaced by its value without changing the overall result
({referential transparency}).
The order of evaluation of subexpressions is determined by the
language's {evaluation strategy}. In a {strict}
({call-by-value}) language this will specify that arguments
are evaluated before applying a function whereas in a
non-strict ({call-by-name}) language arguments are passed
unevaluated.
Programs written in a functional language are generally
compact and elegant, but have tended, until recently, to run
slowly and require a lot of memory.
Examples of functional languages are {Clean}, {FP}, {Haskell},
{Hope}, {LML}, {Miranda} and {SML}. Many other languages such
as {Lisp} have a subset which is {purely functional} but also
contain non-functional constructs.
See also {lazy evaluation}, {reduction}.
{Lecture notes
(ftp://ftp.cs.olemiss.edu/pub/tech-reports/umcis-1995-01.ps)}
or the same {in dvi-format
(ftp://ftp.cs.olemiss.edu/pub/tech-reports/umcis-1995-01.dvi)}.
{FAQ
(http://www.cs.nott.ac.uk/Department/Staff/gmh/faq.html)}.
{SEL-HPC Article Archive
(http://www.lpac.ac.uk/SEL-HPC/Articles/)}.
(1999-01-08)